package com.baidu.qianfan.util;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Base64;

/**
* 将base64编码通过swing转为GUI窗口图片
 * 确保GUI的创建在事件调度线程中进行
 * SwingUtilities.invokeLater(() -> new Base64ImageDisplay(b64Image));
*/
public class Base64ImageDisplay extends JFrame {

    public Base64ImageDisplay(String encodedImage) {

        // 解码Base64字符串为字节数据
        byte[] imageBytes = Base64.getDecoder().decode(encodedImage);

        // 使用字节数据创建BufferedImage对象
        try (ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes)) {
            BufferedImage image = ImageIO.read(bis);

            // 创建一个JLabel来显示图片
            JLabel label = new JLabel(new ImageIcon(image));

            // 设置JFrame的布局为BorderLayout，并添加JLabel
            this.setLayout(new BorderLayout());
            this.add(label, BorderLayout.CENTER);

            // 设置JFrame的其他属性
            this.setSize(1024, 1024); // 根据需要调整大小
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLocationRelativeTo(null); // 居中显示
            this.setVisible(true);
        } catch (IOException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(this, "Error loading image", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

}